package com.atguigu.gmall.cart.rpc;

import com.atguigu.gmall.cart.entity.CartItem;
import com.atguigu.gmall.cart.service.CartBizService;
import com.atguigu.gmall.cart.vo.AddCartSuccessVo;
import com.atguigu.gmall.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author lfy
 * @Description
 * @create 2022-10-17 9:23
 */

@Slf4j
@RequestMapping("/api/inner/cart")
@RestController
public class CartRpcController {



    @Autowired
    CartBizService cartBizService;

    /**
     * 把商品添加到购物车
     * @param skuId
     * @param skuNum
     * @return
     */
    @GetMapping("/add/{skuId}")
    public Result<AddCartSuccessVo> addToCart(@PathVariable("skuId") Long skuId,
                                              @RequestParam("skuNum") Integer skuNum){
        log.info("添加: 商品id: {} 到购物车",skuId);

        //redis里面保存key-value；
        // 跨层传递数据（直接方法参数传、利用线程绑定、共享到一个公共位置）
        AddCartSuccessVo cartSuccess =  cartBizService.addToCart(skuId,skuNum);

        return Result.ok(cartSuccess);
    }

    /**
     * 删除购物车中选中的商品
     * @return
     */
    @GetMapping("/delete/checked")
    public Result deleteChecked(){
        cartBizService.deleteChecked();
        return Result.ok();
    }


    /**
     * 获取购物车中选中的商品
     * @return
     */
    @GetMapping("/checked/items")
    public Result<List<CartItem>> getCheckedCartItems(){

        String cartKey = cartBizService.determinCartKey();

        List<CartItem> cartItems = cartBizService.getCheckedCartItems(cartKey);

        return Result.ok(cartItems);
    }

}
